package com.example.bigDecimal;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class MainTest {
    public static void main(String[] args) {
        // builderBigDecimal();
        // compare();
        // coverString();
        scale();
    }

    /**
     * 因为double类型只能保留有限的有效数字，
     * 当这个数字被转换为BigDecimal对象时，精度可能会丢失
     */
    public static void builderBigDecimal() {
        BigDecimal a = new BigDecimal("0.1");
        BigDecimal b = new BigDecimal(0.1);
        System.out.println(a);
        System.out.println(b);
    }

    /**
     * 比较大小
     * 返回值
     * 0:表示相等
     * 1:表示大于
     * -1:表示小于
     */
    public static void compare() {
        BigDecimal a = new BigDecimal("2.0");
        BigDecimal b = new BigDecimal("2.00");
        System.out.println(a.equals(b));
        System.out.println(a.compareTo(b));
    }

    /**
     * BigDecimal.toString() 会变成科学计数法表示的数字
     */
    public static void coverString() {
        BigDecimal a = new BigDecimal("0.0000000000000");
        System.out.println(a.toString());
        System.out.println(a.toPlainString());
    }

    /**
     * 使用setScale方法设置精度，不会改变修改原对象，需要重新赋值
     */
    public static void scale() {
        BigDecimal a = new BigDecimal("1.12345");
        a = a.setScale(2, RoundingMode.HALF_UP);
        System.out.println(a);
    }
}
